1. Field of the Invention
The present invention relates to a virtual processor system which is characterized by data communications among processors in a multiprocessor system such as a parallel computer system, and more particularly to a data transfer processing method and apparatus for data communications among processors for parallel processing.
2. Description of the Related Art
The demand for high-speed, large-capacity computer systems is increasing in recent years. This involves a parallel processing technique in which a plurality of processors are provided and processing is distributed over these processors for parallel processing.
Thus, multiprocessor systems have been proposed in which a plurality of processors perform parallel processing. In the multiprocessor systems, the processors operate in parallel while each processor communicates with others over a communication network, allowing all the processors to perform coherent processing. This will speed up processing required for a job.
In communications between processors in such a multiprocessor system, when transferring data existing in a storage area of the main storage of a processor A to a processor B, a supervisor program generally manages the queuing of data transfers to the processor B. When a user program generates an interruption for a data transfer request to the supervisor program, the supervisor program creates the header of a transfer packet to make a data transfer request.
With this method, however, the user program may generate many interruptions to the supervisor program, increasing system overhead. To reduce overhead resulting from supervisor program intervention, a method has been proposed which transfers data without using a supervisor program. This method will be described below.
A transfer request queue includes a write pointer and a read pointer which are directly managed by a user program. Virtual space is set aside within the main storage, and the user program makes access to the main storage by referring to an address translation table for translation between virtual and real addresses, thereby performing data transfer processing.
However, even this method cannot achieve the following function:
(1) To execute a program prepared and compiled to run on a number n of processors on m (less than n) processors in case where, for example, several processors are disconnected in the event of a processor failure; or PA1 (2) To transport a program developed for n processors to a parallel computer system having m (less than n) processors on an object level and execute it.
A conventional multiprocessor system has the following problems.
When the contents of the address translation table of a processor are changed, the contents of the address translation tables of the other processors must be updated correspondingly. In this case, an operating system (OS) performs synchronous processing. This synchronous processing is to suspend processing until all the address translation tables are updated and to perform the next processing when all the address translation tables have been updated. The synchronous processing increases the overhead of the operating system, degrading the system performance.